/******************************************************************************
 ** 公司名称：天津柯迪斯科技有限公司
 ** 版权信息：
 ** 文件名称： bsp_eeprom_24xx.c
 ** 模块名称： 串行EEPROM 24Cxx驱动模块
 ** 版 本 号： V1.0
 ** 作    者： PLAY
 ** 备    注： 访问串行EEPROM前，请先调用一次 bsp_InitI2C()函数配置好I2C相关的GPIO.
 ** 修改记录： 版本     修改人      时间         修改内容
 **
 ******************************************************************************/
#ifndef _BSP_EEPROM_24XX_H
#define _BSP_EEPROM_24XX_H
/******************************************************************************
* 头文件
******************************************************************************/
#include "main.h"
#include "bsp_i2c_gpio.h"

/******************************************************************************
* 宏定义 ('#define')                             
******************************************************************************/

/*器件型号定义，根据实际选择对应的器件*/
//#define AT24C01
//#define AT24C02
#define AT24C04
//#define AT24C08
//#define AT24C16
//#define AT24C32
//#define AT24C64
//#define AT24C128
//#define AT24C256
//#define AT24C512

#ifdef AT24C01
	#define EE_MODEL_NAME		"AT24C01"
	#define EE_DEV_ADDR			0xA0		/* 设备地址 */
	#define EE_PAGE_SIZE		8			/* 页面大小(字节) */
	#define EE_SIZE				128			/* 总容量(字节) */
	#define EE_ADDR_BYTES		1			/* 地址字节个数 */
#endif

#ifdef AT24C02
	#define EE_MODEL_NAME		"AT24C02"
	#define EE_DEV_ADDR			0xA0		/* 设备地址 */
	#define EE_PAGE_SIZE		8			/* 页面大小(字节) */
	#define EE_SIZE				256			/* 总容量(字节) */
	#define EE_ADDR_BYTES		1			/* 地址字节个数 */
#endif

#ifdef AT24C04
	#define EE_MODEL_NAME		"AT24C04"
	#define EE_DEV_ADDR			0xA0		/* 设备地址 */
	#define EE_PAGE_SIZE		16			/* 页面大小(字节) */
	#define EE_SIZE				512			/* 总容量(字节) */
	#define EE_ADDR_BYTES		1			/* 地址字节个数 */
#endif

#ifdef AT24C08
	#define EE_MODEL_NAME		"AT24C08"
	#define EE_DEV_ADDR			0xA0		/* 设备地址 */
	#define EE_PAGE_SIZE		16			/* 页面大小(字节) */
	#define EE_SIZE				1024		/* 总容量(字节) */
	#define EE_ADDR_BYTES		1			/* 地址字节个数 */
#endif

#ifdef AT24C16
	#define EE_MODEL_NAME		"AT24C16"
	#define EE_DEV_ADDR			0xA0		/* 设备地址 */
	#define EE_PAGE_SIZE		16			/* 页面大小(字节) */
	#define EE_SIZE				(2*1024)	/* 总容量(字节) */
	#define EE_ADDR_BYTES		1			/* 地址字节个数 */
#endif

#ifdef AT24C32
	#define EE_MODEL_NAME		"AT24C32"
	#define EE_DEV_ADDR			0xA0		/* 设备地址 */
	#define EE_PAGE_SIZE		32			/* 页面大小(字节) */
	#define EE_SIZE				(4*1024)	/* 总容量(字节) */
	#define EE_ADDR_BYTES		2			/* 地址字节个数 */
#endif

#ifdef AT24C64
	#define EE_MODEL_NAME		"AT24C64"
	#define EE_DEV_ADDR			0xA0		/* 设备地址 */
	#define EE_PAGE_SIZE		32			/* 页面大小(字节) */
	#define EE_SIZE				(8*1024)	/* 总容量(字节) */
	#define EE_ADDR_BYTES		2			/* 地址字节个数 */
#endif

#ifdef AT24C128
	#define EE_MODEL_NAME		"AT24C128"
	#define EE_DEV_ADDR			0x78		/* 设备地址 */
	#define EE_PAGE_SIZE		64			/* 页面大小(字节) */
	#define EE_SIZE				(16*1024)	/* 总容量(字节) */
	#define EE_ADDR_BYTES		2			/* 地址字节个数 */
#endif

#ifdef AT24C256
	#define EE_MODEL_NAME		"AT24C256"
	#define EE_DEV_ADDR			0xA0		/* 设备地址 */
	#define EE_PAGE_SIZE		64			/* 页面大小(字节) */
	#define EE_SIZE				(32*1024)	/* 总容量(字节) */
	#define EE_ADDR_BYTES		2			/* 地址字节个数 */
#endif

#ifdef AT24C512
	#define EE_MODEL_NAME		"AT24C512"
	#define EE_DEV_ADDR			0xA0		/* 设备地址 */
	#define EE_PAGE_SIZE		128			/* 页面大小(字节) */
	#define EE_SIZE				(64*1024)	/* 总容量(字节) */
	#define EE_ADDR_BYTES		2			/* 地址字节个数 */
#endif

/*没有使用写保护的话，保持宏定义为空即可*/
#define WRITE_PROTECT_ON		
#define WRITE_PROTECT_OFF		


/******************************************************************************
* 类型定义 ('typedef')                                         
******************************************************************************/

/******************************************************************************
* 全局变量声明 
******************************************************************************/

/******************************************************************************
* 函数声明 
******************************************************************************/
uint8_t EE_CheckOk(void);
uint8_t EE_ReadBytes(uint8_t *_pReadBuf, uint16_t _usAddress, uint16_t _usSize);
uint8_t EE_WriteBytes(uint8_t *_pWriteBuf, uint16_t _usAddress, uint16_t _usSize);

#endif


